package br.com.jw.controle;


import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;

import br.com.jw.dao.PermissoesDao;
import br.com.jw.dao.UsuarioDao;
import br.com.jw.jdbc.Pool;
import br.com.jw.modelo.Usuario;


public class ThreadUsuarios extends Thread {
	private Socket socket;
	String dados;
	private Pool pool=new Pool();
	UsuarioDao usuarioDao = new UsuarioDao(pool);
	PermissoesDao permissoesDao;
	Usuario usuario = new Usuario();
	boolean aux = false;
    int resultado = 0;
	public ThreadUsuarios(Socket socket) {
		this.socket = socket;

	}

	public void run() {
		try {
			DataInputStream in = new DataInputStream(socket.getInputStream());
			DataOutputStream out = new DataOutputStream(
					socket.getOutputStream());
			String modo = in.readUTF();
			
			if (modo.equals("login")) {
				usuario = new Usuario();
				usuarioDao = new UsuarioDao(pool);

				usuario.setUsu_login(in.readUTF());
				usuario.setUsu_senha(in.readUTF());
								
				int resultado = usuarioDao.logar(usuario);
				out.writeInt(resultado);
					
				out.close();
				in.close();
				socket.close();
				}	
			
			else if (modo.equals("inserirUsuario")) {
				usuario = new Usuario();
				usuarioDao = new UsuarioDao(pool);
				usuario.setUsu_login(in.readUTF());
				usuario.setUsu_senha(in.readUTF());
				
				if(usuarioDao.inserirUsuario(usuario)){
					out.writeBoolean(true);
				}else{
					out.writeBoolean(false);
				}
				
			out.close();
			in.close();
			socket.close();
			}
			
			else if(modo.equals("alterarUsuario")){			
				usuarioDao=new UsuarioDao(pool);
				usuario=new Usuario();
				
				usuario.setUsu_id(in.readInt());
				usuario.setUsu_login(in.readUTF());
				usuario.setUsu_senha(in.readUTF());
				
			    if(usuarioDao.alterarUsuario(usuario)){
			    	out.writeBoolean(true);
			    }else{
			    	out.writeBoolean(false);
			    }
			    
				out.close();
				in.close();
				socket.close();
				}
			else if(modo.equals("excluirUsuario")){			
				UsuarioDao usuarioDao=new UsuarioDao(pool);
				
				int codigo=in.readInt();
			    if(usuarioDao.excluirUsuario(codigo)){
			    	out.writeBoolean(true);
			    }else{
			    	out.writeBoolean(false);
			    }
				
				out.close();
				in.close();
				socket.close();
				}
			else if(modo.equals("listarUsuarios")){
				UsuarioDao usuarioDao=new UsuarioDao(pool);
				String dados="";
				for(Usuario u:usuarioDao.getUsuarios()){
					dados+=u.getUsu_id()+",";
					dados+=u.getUsu_login()+",";
					dados+=u.getUsu_senha()+",";
					
				}				
				out.writeUTF(dados);
				}
			
			out.close();
			in.close();
			socket.close();
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
